Positive Lookahead (?=) এবং Negative Lookahead (?!) গাইড ও নোট

Web Development - জাভাস্ক্রিপ্ট রেগএক্সপি (Javascript RegExp) - Lookaheads এবং Lookbehinds
224

RegExp-এ lookahead প্যাটার্নগুলি একটি গুরুত্বপূর্ণ ধারণা, যা বিশেষ ধরনের ম্যাচিং কন্ডিশন তৈরি করে। এগুলি zero-width assertions হিসাবে কাজ করে, অর্থাৎ এটি স্ট্রিংয়ের একটি নির্দিষ্ট অবস্থান চিহ্নিত করতে ব্যবহৃত হয়, তবে এটি সেই অবস্থানকে স্ট্রিংয়ে অন্তর্ভুক্ত করে না। এই প্যাটার্ন দুটি—positive lookahead এবং negative lookahead—স্ট্রিংয়ের ভিতরে এমন কিছু মিল খুঁজে বের করার জন্য ব্যবহৃত হয় যা নির্দিষ্ট শর্তে থাকবে।


Positive Lookahead (?=)

Positive Lookahead (?=) এমন একটি প্যাটার্ন, যা একটি নির্দিষ্ট শর্তের পরে কী আসবে তা পরীক্ষা করে। তবে এটি স্ট্রিংয়ের সেই অংশটিকে মেলানোর জন্য অন্তর্ভুক্ত করে না, এটি শুধু নিশ্চিত করে যে ওই অবস্থানে নির্দিষ্ট কিছু থাকবে।

Positive lookahead হল একটি শর্ত যা পরবর্তী অংশটি কি থাকবে তার জন্য পরীক্ষা করে।


উদাহরণ:

let regex = /[A-Za-z]+(?=\d)/;
let str = "Hello123";
console.log(regex.test(str));  // true

এখানে, [A-Za-z]+(?=\d) প্যাটার্নটি শুধুমাত্র এমন শব্দের জন্য মেলে, যার পরে একটি সংখ্যা রয়েছে। "Hello123" স্ট্রিংয়ের মধ্যে "Hello" এর পর একটি সংখ্যা আছে, তাই প্যাটার্নটি মেলে, কিন্তু "Hello" শব্দটিকে মেলানোর পর স্ট্রিংয়ে কোনো পরিবর্তন হবে না।


ব্যাখ্যা:

  • [A-Za-z]+: এটি এক বা একাধিক অক্ষর খুঁজে বের করে।
  • (?=\d): এটি একটি positive lookahead যা নিশ্চিত করে যে, ঐ অক্ষরের পর একটি সংখ্যা (\d) থাকবে।

এখানে, "Hello" এর পরে একটি সংখ্যা (123) রয়েছে, তাই এটি মিলে যাচ্ছে, তবে সংখ্যা "123" মেলানো হচ্ছে না। শুধু "Hello" অংশটি মেলা হিসেবে চিহ্নিত হয়েছে।


Negative Lookahead (?!)

Negative Lookahead (?!) হল এমন একটি প্যাটার্ন, যা একটি নির্দিষ্ট শর্তের পরে কী আসবে না তা পরীক্ষা করে। এটি শর্তকে মেনে চলতে বাধা দেয়। অর্থাৎ, এটি একটি প্যাটার্ন মেলাতে হবে যদি পরবর্তী অংশটি কিছু নির্দিষ্ট শর্ত পূর্ণ না করে।

Negative lookahead হল একটি শর্ত যা পরবর্তী অংশটি কি থাকবে না, তা পরীক্ষা করে।


উদাহরণ:

let regex = /[A-Za-z]+(?!\d)/;
let str = "Hello123";
console.log(regex.test(str));  // false

এখানে, [A-Za-z]+(?!\d) প্যাটার্নটি মেলে যদি পরবর্তী অংশে কোনো সংখ্যা না থাকে। কিন্তু, "Hello123" স্ট্রিংয়ের মধ্যে "Hello" এর পরে সংখ্যা রয়েছে, তাই এটি মেলে না।


ব্যাখ্যা:

  • [A-Za-z]+: এটি এক বা একাধিক অক্ষর খুঁজে বের করে।
  • (?!\d): এটি একটি negative lookahead যা নিশ্চিত করে যে, ঐ অক্ষরের পর একটি সংখ্যা না থাকবে

এখানে, "Hello" এর পরে একটি সংখ্যা (123) রয়েছে, তাই এটি মেলে না। "Hello" এর পর যদি কোনো সংখ্যা না থাকত, তবে এটি মেলে যেত।


Positive এবং Negative Lookahead এর মধ্যে পার্থক্য

  1. Positive Lookahead (?=): এটি নিশ্চিত করে যে পরবর্তী অংশে কিছু নির্দিষ্ট থাকবে, তবে নিজে সেই অংশটিকে মেলানো হবে না।
    • উদাহরণ: /abc(?=\d)/ - এটি "abc" কে মেলে যদি তার পরে একটি সংখ্যা থাকে।
  2. Negative Lookahead (?!): এটি নিশ্চিত করে যে পরবর্তী অংশে কিছু নির্দিষ্ট কিছু থাকবে না।
    • উদাহরণ: /abc(?!\d)/ - এটি "abc" কে মেলে যদি তার পরে কোনো সংখ্যা না থাকে।

সারাংশ

Positive Lookahead (?=) এবং Negative Lookahead (?!) দুটি শক্তিশালী প্যাটার্ন যেগুলি নির্দিষ্ট শর্তে স্ট্রিংয়ের একটি অবস্থান চিহ্নিত করতে ব্যবহৃত হয়। Positive lookahead নিশ্চিত করে যে পরবর্তী অংশে কিছু নির্দিষ্ট থাকবে, আর negative lookahead নিশ্চিত করে যে পরবর্তী অংশে কিছু নির্দিষ্ট থাকবে না। এভাবে, lookahead প্যাটার্নগুলি স্ট্রিং ম্যানিপুলেশনে আরও নমনীয়তা এবং জটিলতা যোগ করে।

Content added By
Promotion

Are you sure to start over?

Loading...